package com.ozo.easy.gen.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ozo.easy.common.model.BaseBatchDTO;
import com.ozo.easy.common.model.BasePage;
import com.ozo.easy.common.model.PageResult;
import com.ozo.easy.gen.entity.GenTable;
import com.ozo.easy.gen.pojo.dto.GenTableAddDTO;
import com.ozo.easy.gen.pojo.dto.GenTableDetailDTO;
import com.ozo.easy.gen.pojo.dto.GenTableImportDTO;
import com.ozo.easy.gen.pojo.dto.GenTableQueryDTO;
import com.ozo.easy.gen.pojo.vo.GenTableVO;

import javax.servlet.http.HttpServletResponse;

/**
 * <p>
 * 表配置 服务类
 * </p>
 *
 * @author ozo
 * @since 2025-01-06
 */
public interface IGenTableService extends IService<GenTable> {

    /**
     * 导入表
     *
     * @param tableImportDTO
     */
    void importTable(GenTableImportDTO tableImportDTO);

    /**
     * 新建表
     *
     * @param addDTO
     */
    void add(GenTableAddDTO addDTO);

    /**
     * 删除表
     *
     * @param batchDTO
     */
    void remove(BaseBatchDTO<Long> batchDTO);

    /**
     * 编辑配置
     *
     * @param saveDTO
     */
    void edit(GenTableDetailDTO saveDTO);

    /**
     * 表分页
     *
     * @param basePage
     * @param queryDTO
     * @return
     */
    PageResult<GenTableVO> page(BasePage basePage, GenTableQueryDTO queryDTO);

    /**
     * 表配置详情
     *
     * @param id
     * @return
     */
    GenTableDetailDTO detail(Long id);

    /**
     * 代码生成本地
     *
     * @param id
     */
    void generateLocal(Long id);

    /**
     * 代码生成下载
     *
     * @param id
     * @param response
     */
    void generateDownload(Long id, HttpServletResponse response);

    /**
     * 查询数据库表
     *
     * @param basePage
     * @param queryDTO
     * @return
     */
    PageResult<GenTableVO> pageDbTable(BasePage basePage, GenTableQueryDTO queryDTO);

}
